class Solution {
public:
    int deleteAndEarn(vector<int>& nums) {
        int num[10001]={0};//0<=nums[i]<=10000,故开10001空间的整型数组
        for(auto n:nums){
            num[n]+=n;//nums[n]为多少，对应下标的值就加多少
        }
        //再在num数组中做一次打家劫舍
        vector<int>f(10001);
        auto g=f;
       for(int k=1;k<10001;k++){
        f[k]=g[k-1]+num[k];
        g[k]=max(f[k-1],g[k-1]);
       } 
       return max(f[10000],g[10000]);
    }
};
